/**
 * Copyright &copy; 2012-2014 <a href="https://github.com/thinkgem/jeesite">JeeSite</a> All rights
 * reserved.
 */

package com.wlsk.license.config;

import com.google.common.collect.Maps;
import com.wlsk.license.common.utils.PropertiesLoader;
import org.apache.commons.lang3.StringUtils;

import java.util.Map;

/**
 * 全局配置类
 *
 * @author ThinkGem
 * @version 2014-06-25
 */
public class Global {

  /**
   * 当前对象实例
   */
  private static Global global = new Global();

  /**
   * 保存全局属性值
   */
  private static Map<String, String> map = Maps.newHashMap();

  /**
   * 属性文件加载对象
   */
  private static PropertiesLoader loader = new PropertiesLoader("innosill.properties");

  /**
   * 显示/隐藏
   */
  public static final String SHOW = "1";

  public static final String HIDE = "0";

  /**
   * 是/否
   */
  public static final String YES = "1";

  public static final String NO = "0";

  /**
   * 对/错
   */
  public static final String TRUE = "true";

  public static final String FALSE = "false";

  // 组织结构类型
  /**
   * 机构
   */
  public static final String ORG = "org";

  /**
   * 部门
   */
  public static final String DEPT = "dpt";

  /**
   * 岗位
   */
  public static final String PST = "pst";

  /**
   * 人员
   */
  public static final String PSN = "psn";

  // 部门、机构类别
  /**
   * 管理单位
   */
  public static final String GLDW = "gldw";

  /**
   * 经营单位
   */
  public static final String JYDW = "jydw";

  /**
   * 管理部门
   */
  public static final String GLBM = "glbm";

  /**
   * 经营部门
   */
  public static final String JYBM = "jybm";

  /**
   * 管理经营部门
   */
  public static final String GLJYBM = "gljybm";

  /**
   * 车辆保养里程周期,固定
   */
  public static final Integer MAINTAINKMS = 10000;

  // 考核模块主信息状态
  /**
   * 未准备状态0
   */
  public static final Integer NOT_READY = 0;

  /**
   * 准备状态1
   */
  public static final Integer READY = 1;

  /**
   * 编辑状态2
   */
  public static final Integer EDIT = 2;

  /**
   * 提交状态3
   */
  public static final Integer SUBMIT = 3;

  /**
   * 完成状态4
   */
  public static final Integer DONE = 4;

  /**
   * 上传文件基础虚拟路径
   */
  public static final String USERFILES_BASE_URL = "/userfiles/";

  /**
   * 月考核开始的日子
   */
  public static int EXAM_DAY = 26;

  /**
   * 枚举角色-用户
   */
  public static final String ROLE_USER = "user";

  /**
   * 枚举角色-管理员
   */
  public static final String ROLE_ADMIN = "admin";

  /**
   * 获取当前对象实例
   */
  public static Global getInstance() {
    return global;
  }

  /**
   * 获取配置
   *
   */
  public static String getConfig(String key) {
    String value = map.get(key);
    if (value == null) {
      value = loader.getProperty(key);
      map.put(key, value != null ? value : StringUtils.EMPTY);
    }
    return value;
  }

  /**
   * 获取管理端根路径
   */
  public static String getAdminPath() {
    return getConfig("adminPath");
  }

  /**
   * 获取手机端根路径
   */
  public static String getAppPath() {
    return getConfig("appPath");
  }

  /**
   * 获取接口端根路径
   */
  public static String getEsbPath() {
    return getConfig("esbPath");
  }

  /**
   * 获取前端根路径
   */
  public static String getFrontPath() {
    return getConfig("frontPath");
  }

  /**
   * 获取URL后缀
   */
  public static String getUrlSuffix() {
    return getConfig("urlSuffix");
  }

  /**
   * 是否是演示模式，演示模式下不能修改用户、角色、密码、菜单、授权
   */
  public static Boolean isDemoMode() {
    String dm = getConfig("demoMode");
    return "true".equals(dm) || "1".equals(dm);
  }
}
